import { Module } from '@nestjs/common';
import { AppController } from './controllers/app.controller';
import { ViewsController } from './views/views.controller';
import { AppService } from './service/app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TUserBasicModule } from './modules/users/user-basic.module';
import { TUserBasic } from './entities/user-basic.entity';
import { BlogArticle } from './entities/blog_article.entity';
import { DataService } from './service/data.service';
import { ImagesModule } from './modules/images/images.module';
import { Image } from './modules/images/image.entity';
import { TableTemplate } from './entities/template.entity';
import {TemplateModule} from "./modules"
// import { TableTemplateService } from './service/template.service';

 
@Module({
  imports: [
    // TypeOrmModule.forFeature([Image]),
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: '47.108.207.186',
      port: 3306,
      username: 'root',
      // password: 'datapuxun2', // 本地
      password: '6638145', // aliyun
      database: 'lin',
      entities: [TUserBasic, BlogArticle, TableTemplate, Image ], // 告诉TypeORM要管理Image实体
      synchronize: true,
    }),
    // 注册用户模块
    TUserBasicModule,
    TemplateModule,
    ImagesModule
  ],
  controllers: [AppController, ViewsController],
  providers: [AppService, DataService,],
})
export class AppModule {}

// 实体注册机制
// TypeORM使用entities数组来识别和跟踪所有需要管理的数据库实体。
// 这个数组就像是一个实体注册表，告诉TypeORM哪些类需要被映射为数据库表。

// TypeOrmModule.forRoot()中的entities数组是全局级别的配置，它告诉TypeORM核心系统有哪些实体需要被管理
// TypeOrmModule.forFeature()是模块级别的配置，它让特定模块可以使用这些实体